Piezoresistive sensors and applications

ABSTRACT

A highly configurable controller is described that includes a number of different types of control mechanisms that emulate a wide variety of conventional control mechanisms using pressure and location sensitive sensors that generate high-density control information which may be mapped to the controls of a wide variety of devices and software.

INCORPORATION BY REFERENCE

An Application Data Sheet is filed concurrently with this specificationas part of this application. Each application to which this applicationclaims benefit or priority as identified in the concurrently filedApplication Data Sheet is incorporated by reference herein in itsentirety and for all purposes.

BACKGROUND

There are a number of controllers used by musicians for triggering drumsounds, manipulating rhythmic beats, adjusting parameters and launchingsample-based clips. Minimal user feedback is provided requiring themusician to look at a computer screen for information of the state ofthe sound producing software. Available controller devices have limitedutility and are usually targeted at a specific type of data manipulationor work only with specific software. Typically these devices have usedsimple switches, variable knobs or slide potentiometers and triggerpads. These limitations require users to have multiple pieces of gearthat produce a limited amount of control.

SUMMARY

According to a first class of implementations, a controller is providedthat includes N control pads and one or more processors, where N is aninteger greater than zero. Each control pad has sensor circuitryassociated therewith configured to generate one or more sensor signalsrepresenting corresponding touch events on a corresponding surface ofthe control pad. The one or more sensor signals associated with eachcontrol pad also represent corresponding locations of the touch eventson the surface of the control pad. The one or more processors areconfigured to generate control information from the sensor signals. In afirst operational mode the one or more processors are configured to mapthe control information to N control functions. In a second operationalmode the one or more processors are configured to map the controlinformation to N×M control functions corresponding to the locations ofthe touch events on the surfaces of the N control pads, where M is aninteger greater than one.

According to one such implementation, N is 16 and M is 4. The N controlpads are arranged in a 4×4 array, and the locations of the touch eventson the surfaces of the N control pads corresponding to the N×M controlfunctions form an 8×8 control array. According to another suchimplementation, the first mode of operation corresponds to a drum padcontroller, and the second mode of operation corresponds to a gridcontroller. According to another such implementation, the one or moresensor signals associated with each control pad also represent pressureof the touch events on the surface of the control pad, and the pressureof the touch events is reflected in the control information.

According to yet another such implementation, the sensor circuitryassociated with each control pad includes four sensor quadrants. Eachsensor quadrant includes first conductive elements connected to a firstvoltage reference and second conductive elements connected to a secondvoltage reference. At least some of the first and second conductiveelements are connected to the corresponding voltage reference via aresistive element. The sensor circuitry also includes a conductivematerial configured to make contact with at least some of the first andsecond conductive elements in at least some of the sensor quadrants inresponse to the touch events, thereby forming one or more voltagedividers corresponding to the sensor quadrants with which contact ismade. According to a specific implementation, the conductive material orat least some of the first and second conductive elements are or includea piezoresistive material. According to another specific implementation,the first and second conductive elements are arranged as concentricconductive traces across the four sensor quadrants, at least some of theconcentric conductive traces being discontinuous, thereby defining thefour sensor quadrants.

According to another class of implementations, a sensor is configured togenerate one or more sensor signals representing corresponding touchevents on a corresponding surface associated with the sensor. The sensorincludes sensor circuitry that includes four sensor quadrants. Eachsensor quadrant includes first conductive elements connected to a firstvoltage reference and second conductive elements connected to a secondvoltage reference. At least some of the first and second conductiveelements are connected to the corresponding voltage reference via aresistive element. The sensor circuitry also includes a conductivematerial configured to make contact with at least some of the first andsecond conductive elements in at least some of the sensor quadrants inresponse to the touch events, thereby forming one or more voltagedividers corresponding to the sensor quadrants with which contact ismade.

According to one such implementation, the conductive material or atleast some of the first and second conductive elements are or include apiezoresistive material. According to another such implementation, thefirst and second conductive elements are arranged as concentricconductive traces across the four sensor quadrants. At least some of theconcentric conductive traces are discontinuous, thereby defining thefour sensor quadrants.

According to another such implementation, the one or more sensor signalsrepresent pressure of the touch events on the surface of the sensor.

According to yet another such implementation, the one or more sensorsignals represent corresponding locations of the touch events on thesurface of the sensor. According to a more specific implementation, thetouch events correspond to an object in contact with the surface of thesensor, and the one or more sensor signals also represent movement ofthe object across the surface of the sensor. According to an even morespecific implementation, the one or more sensor signals also representpressure of the touch events on the surface of the sensor, and the oneor more sensor signals also represent wiggling of the object on thesurface of the sensor.

According to another class of implementations, a sensor is configured togenerate one or more sensor signals representing corresponding touchevents on a corresponding surface associated with the sensor. The sensorcomprising sensor circuitry that includes an arrangement of conductiveelements. First one of the conductive elements are connected to avoltage reference, and second ones of the conductive elements areconfigured to receive sequential drive signals. At least some of thefirst and second conductive elements are connected to a resistiveelement. The sensor circuitry also includes a conductive materialconfigured to make contact with at least some of the first and secondconductive elements at locations associated with the touch events,thereby forming one or more voltage dividers when the second conductiveelements with which contact by the conductive material is made aredriven by a corresponding one of the sequential drive signals.

According to one such implementation, the conductive material or atleast some of the first and second conductive elements are or include apiezoresistive material.

According to another such implementation, the one or more sensor signalsrepresent corresponding locations of the touch events on the surface ofthe sensor. According to a more specific implementation, the one or moresensor signals represent the corresponding locations of multiple andsimultaneous ones of the touch events on the surface of the sensor.According to another specific implementation, the touch eventscorrespond to an object in contact with the surface of the sensor, andthe one or more sensor signals also represent movement of the objectacross the surface of the sensor. According to an even more specificimplementation, the one or more sensor signals also represent pressureof the touch events on the surface of the sensor, and wherein the one ormore sensor signals also represent wiggling of the object on the surfaceof the sensor.

According to another such implementation, the one or more sensor signalsrepresent pressure of the touch events on the surface of the sensor.According to a more specific implementation, the one or more sensorsignals also represent corresponding locations of multiple andsimultaneous ones of the touch events on the surface of the sensor.

According to yet another such implementation, the arrangement of thefirst and second conductive elements is an alternating arrangement ofthe first and second conductive elements. According to a more specificimplementation, the alternating arrangement of the first and secondconductive elements is either linear, circular, or rectilinear.

According to yet another such implementation, a control system includesat least one instance of the sensor, and one or more processorsconfigured drive the second conductive elements with the sequentialdrive signals, to generate control information from the one or moresensor signals, and to map the control information to one or morecontrol functions. According to a more specific implementation, the oneor more sensor signals represent pressure of the touch events on thesurface of the sensor, and a first one of the touch events correspondsto the conductive material making contact with more than one pair of thefirst and second conductive elements. The one or more processors areconfigured to generate the control information to represent a firstlocation of the first touch event as corresponding to one of the pairsof the first and second conductive element with reference to therepresentation of the pressure of the first touch event in the one ormore sensor signals. According to another specific implementation, theone or more sensor signals represent pressure of the touch events on thesurface of the sensor, and the one or more sensor signals also representcorresponding locations of multiple and simultaneous ones of the touchevents on the surface of the sensor. The one or more processors areconfigured to generate the control information to represent the pressureassociated with each of the simultaneous touch events. According toanother specific implementation, the one or more sensor signalsrepresent corresponding locations and pressure of the touch events onthe surface of the sensor, and the one or more processors are configuredto map the control information to multiple control functionscorresponding to different gestures. According to yet another specificimplementation, the first and second conductive elements are eachwedge-shaped and the arrangement of the first and second conductiveelements is an alternating circular arrangement of the first and secondconductive elements. The one or more processors are configured togenerate the control information to represent a distance from a centerof the circular arrangement based on a number of the conductive elementsrepresented in the one or more sensor signals.

According to yet another class of implementations, computer programproducts and computer-implemented methods are provided for configuring amusic controller to operate with one or more of a plurality of musicapplications from a plurality of different vendors. The plurality ofmusic applications are presented as selectable options in a userinterface of a computing device. One or more selections of the musicapplications are received. A location in memory of the computing deviceis identified for each selected music application. A plurality of scriptcode files is stored in each location. Each script code file mapscontrol information generated by the music controller to functions ofthe selected music application for the corresponding location. Eachselected music application is configured to perform the functions inresponse to the control information from the controller using the scriptcode files stored in the corresponding location in the memory of thecomputing device.

According to one such implementation, copies of the script code filesare stored in one or more directories in the memory of the computingdevice separate from the locations for each of the selected musicapplications.

According to another such implementation, an example file for eachselected music application is stored in the memory of the computingdevice. Each example file including code representing one or more soundsthat may be generated using the corresponding selected music applicationin conjunction with the controller.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a top view of a particular implementation of a controller.

FIG. 2 is a simplified block diagram of a particular implementation of acontroller.

FIG. 3 is a diagram of a particular implementation of a sensor.

FIGS. 4A and 4B are bar graphs representing touch events on the sensorof FIG. 3.

FIG. 5A is a diagram of another implementation of a sensor.

FIG. 5B is a bar graph representing a touch event on the sensor of FIG.5A.

FIG. 6-9 are diagrams of further implementations of sensors.

FIG. 10 is a top view of a layout of an array of LEDs for use with aparticular implementation of a controller.

FIGS. 11A and 11B illustrate a drive current and a drive circuit fordriving LEDs associated with a particular implementation of acontroller.

FIG. 12 shows two different configurations of an array of control padsof a particular implementation of a controller.

FIGS. 13-17 show examples of interfaces for facilitating configurationof a controller to interact with a variety of software applications.

A further understanding of the nature and advantages of variousimplementations may be realized by reference to the remaining portionsof the specification and the drawings.

DETAILED DESCRIPTION

Reference will now be made in detail to specific embodiments of theinvention including the best modes contemplated by the inventors forcarrying out the invention. Examples of these specific embodiments areillustrated in the accompanying drawings. While the invention isdescribed in conjunction with these specific embodiments, it will beunderstood that it is not intended to limit the invention to thedescribed embodiments. On the contrary, it is intended to coveralternatives, modifications, and equivalents as may be included withinthe spirit and scope of the invention as defined by the appended claims.In the following description, specific details are set forth in order toprovide a thorough understanding of the present invention. The presentinvention may be practiced without some or all of these specificdetails. In addition, well known features may not have been described indetail to avoid unnecessarily obscuring the invention.

Various implementations provide a highly configurable controller thatincludes a number of different types of control mechanisms that emulatea wide variety of conventional control mechanisms (e.g., buttons,sliders, pads, rotary controls, etc.) using pressure and locationsensitive sensors that generate high-density control information whichmay be mapped to the controls of a wide variety of devices and software.

A particular implementation shown in FIG. 1 is embodied as a musicaleffects controller 100 and is referred to herein as QuNeo. QuNeo 100provides a variety of sensors, at least some of which are responsive toX and Y (position) and Z (pressure), by which a user effects controlover connected software or device(s). The depicted implementationincludes pressure and position sensitive pads 102, buttons/switches 104,decks or rotary sensors 106 (e.g., to emulate spinning vinyl records),faders or sliders 108 or 110 (e.g., to emulate VU or loudness metering).Any of sensors 104, 106, 108 and 110 may also be sensitive to pressure.As will be discussed, each of the depicted sensors generates controlinformation that may be mapped to control a wide variety of softwareand/or devices.

According to some implementations, pressure and position sensitive pads102 can be used to elicit percussive sounds that vary in timbre based onwhere the user strikes the pad which is analogous to real acousticpercussion instruments. Faders 108 are analogous to volume levelcontrols on traditional mixing boards. Buttons 104 can be used to makeselections from lists presented by a computer menu and can scroll ornavigate more rapidly through the list based on how firmly the button ispushed. A wide variety of other applications of the sensor capabilitiesand high density control information generated by controllers asimplemented herein will be apparent to those of skill in the art.

FIG. 2 shows a simplified block diagram of the components of acontroller such as, for example, QuNeo 100. In this diagram only some ofthe sensors are depicted for the sake of clarity. Pad 102 is shown toinclude four voltage dividers 202 implemented with piezoresistivematerial, each of which generates an output signal responsive topressure exerted on pad 102 that is reflective of the changingcharacteristics of the respective voltage dividers. The signals aremultiplexed (204) and converted to digital form (206) and then providedas input to one or more microprocessors 208.

Sliders 108 and 110, the operation of which is described below, arescanned or driven by microprocessor 208 via decoders, e.g., decoder 210(only one of which is shown for clarity). The outputs of sliders 108 and110 are then converted to digital form (not shown) for input tomicroprocessor 208. Other sensors, e.g., buttons 106 shown in FIG. 1,provide input to microprocessor 208 by similar connections. In thisimplementation, microprocessor 208 also controls an LED matrix 212 thatunderlies the translucent surfaces of the various sensors. A particulardrive scheme for such an LED matrix is described below. Optional MIDI(Musical Instrument Digital Interface) input and MIDI output areprovided by which microprocessor 208 may communicate with and controlvarious MIDI-compliant devices. Control information generated from thevarious sensors may also be provided over a serial link (e.g., USB link214) for the control of software (e.g., on computing device 216) or aconnected device (not shown). The functionalities of QuNeo 100 may alsobe configured, programmed, or modified via USB link 214 by softwareresiding on computing device 216. Alternatively, USB link 214 may bereplaced by any suitable alternative including, for example, a wirelessconnection. Computing device 216 may be any of a wide variety ofcomputing devices including, for example, a personal computer (e.g., alaptop or desktop), a mobile device (e.g., a cell phone, smart phone, ortablet), a set top box (e.g., for cable or satellite systems), a smarttelevision, a gaming console, etc.

According to a particular class of implementations, a subset of thesensors (e.g., the sliders and rotary sensors) are implemented using anarray of driven or scanned conductive printed circuit board (PCB)elements alternating with conductive elements connected to a voltagereference, e.g., ground, through a resistor. The array overlaid with aconductive pressure sensitive compressible material that may be apiezoresistive material such as, for example, germanium, polycrystallinesilicon, amorphous silicon, non-woven impregnated fabric and singlecrystal silicon. FIG. 3 shows a configuration of a such a sensor inwhich the conductive elements are arranged in a linear array to form aslider. The microprocessor (not shown) sequentially selects andactivates the driven elements (16 elements 302 are used in a particularimplementation) via decoder 304 by raising its voltage to a known level(e.g., 3.3V). The other driven elements 302 are set to ground or 0volts.

The common elements 306 are tied to ground through a resistor. Whenpressure is applied by the user (e.g., using a finger or stylus) thedriven element(s) 302 at the point of contact are connected to thesurrounding common elements 306 by the overlying conductive material(not shown). The voltage at the junction of the common elements and thedriven element(s) is thereby raised and transmitted via a multiplexer toan ADC (not shown). The microprocessor driving the driven elements (notshown) also sequentially measures the corresponding signal levels, e.g.,the voltage at the junction of the driven element(s) and nearby commonelement(s), to determine whether and where a touch event occurs. The ADCoutput can be represented as shown in the bar graph of FIG. 4A in whichthe ADC output from the 16 driven elements is represented as bars alongthe horizontal axis.

According to implementations in which the overlying material thatconnects the sensor resistive elements is a piezoresistive material,processing of this data by the microprocessor yields both pressureinformation (e.g., the sum of all raised data points) and locationinformation (e.g., the centroid of the data points). According to aparticular class of implementations, the positional resolution derivedfrom the array may be much greater than the number of elements, i.e.,interpolation between the data values using a centroid calculation orsimilar method yields greater positional accuracy than simply using thelocations of the array elements. For example, if the ADC converter thatmeasures the voltages of 16 driven elements is 8 bits the positionalresolution is theoretically 1 part in 256 for each of the 16 elementlocations, or 1 part in 4096 for the array using a simple interpolationapproach.

According to some implementations, driven/scanned sensors can beconfigured to recognize multiple touch points. The graph of FIG. 4Billustrates ADC values for three fingers exerting pressure on the lineararray of elements at different locations. Height and number of elementvoltage values map directly to the pressure applied. In suchconfigurations, user interface gestures such as pinch and stretch andmultiple finger swipes can be extracted from the sensor array along withpressure for each of the contact points.

Various configurations of resistive elements are contemplated that yieldinformation about different styles of human gesture. For example, if theelements are arranged in a linear array as shown in FIG. 3 a slider maybe implemented. If the elements are arranged in a two-dimensional array(e.g., a circular or rectilinear array) information about motion intwo-dimensions, e.g., rotary motion, can be extracted.

FIG. 5A shows an example of a two-dimensional array 500 of PCBconductive elements arranged in a circular pattern. In the depictedimplementation, sixteen driven elements alternate with sixteen commonelements. Apart from the shape and configuration of the conductiveelements, the principle of operation of a sensor using array 500 issimilar to the sensor described above with reference to FIG. 3, with thecircuitry for driving and measuring signal levels (not shown) beingsubstantially the same. As with the sensor of FIG. 3, each of the drivenelements can be driven to an active voltage while the common elementsare tied together and biased to a reference, e.g., ground, through aresistor. The entire circular area is covered with a compressibleconductive and/or piezoresistive material. As the microprocessor readsthe ADC values for each of the 16 driven elements, high-resolutionrotational or angular position along with the pressure of the activatingfinger or object may be determined using, for example, interpolationtechniques as mentioned above.

Analyzing the spread of data values using known statistical methods mayprovide information related to the location of the touch event withrespect to the center of circular array 500. This can be expressed asthe radius of the gesturing finger. According to a particularimplementation, the radial “slices” converge in the center of the arrayto a radius approximating the size of the activating source, e.g., suchas 4-5 mm for a human finger. In the bar graph of FIG. 5B, the ADCoutput for all of the driven elements shows some voltage associated withtheir activation. As these approach an equal amount from all radialelements the microprocessor can determine that the finger is in thecenter of the circular array. In addition, for implementations in whichthe overlying material is piezoresistive, the summed height or voltageof all elements is substantially proportional to pressure.

Another sensor that may be used with various implementations of acontroller as described herein is illustrated in FIG. 6. In thisimplementation, a piezoresistive material (not shown) overlies an array600 of concentric conductive traces, a subset of which are discontinuousand divided into four quadrants. As will be discussed, this arrangementis configured to provide both positional information (e.g., X and Y orin the plane of the page), as well as pressure information (e.g., Z orinto the page) regarding a touch event. This arrangement of conductivetraces may be used to implement, for example, sensor pads 102 shown inFIGS. 1 and 2.

Each of four quadrants of 90 degrees includes discontinuous conductivetraces 602 spanning about 90 degrees of arc that are connected to eachother and tied to a reference voltage through a resistor (e.g., 10K ohm)and to an ADC through a multiplexer (e.g., as shown in FIG. 2).Alternating with the discontinuous quadrant traces in the radialdirection are continuous concentric traces 604 that are at somereference, e.g., ground or 0 Volts. The pattern of traces is coveredwith a compressible piezoresistive material (not shown).

As the user presses on a silicone pad that covers the piezo-resistivematerial, the conductive trace of the four quadrants are connected tothe reference voltage (via the piezoresistive material) to varyingdegrees. The location chosen by the user and the pressure exerted inthat position can be determined by a microprocessor (e.g., 208) througha comparison and evaluation of the signal levels present in each of thequadrants. As will be understood, this arrangement can provide a veryhigh density of control information that may be mapped to a wide varietyof applications. For example, in addition to the control of musicaleffects, the control information generated using such a sensor may beused to control a cursor or pointer, or the depicted point of view, inthe user interface of a computing device. In addition, as discussedbelow, this arrangement may also be flexibly configured to operate as asingle sensor or as multiple sensors.

FIG. 7 shows an arrangement of conductive PCB traces for implementinganother type of sensor that allows measurement of pressure at a specificpoint. Using this configuration, even simple switches, e.g., “On/Off”buttons, may be made pressure sensitive by use of a pattern of traces700 covered with the piezoresistive material (not shown). One of traces702 and 704 is pulled up to a reference while the other pull down toanother reference. As the user's finger pressure compresses thepiezoresistive material the resistance between the conductors 702 and704 decreases and the voltage to the ADC changes correspondingly.Applications of such a sensor include, for example, pressure controlledscrolling rates when doing selection of items in a user interface, orpressure-sensitive control of musical parameters.

According to various implementations, the geometry, density, opacity andcoating of an silicone layer overlying the sensors may be controlled toaccomplish any subset of the following: (1) hold the piezoresistivematerial at a specified distance from the trace patterns; (2) deformevenly over the length, diameter or area of the specific sensorproviding a linear and even response; (3) transfer the luminance from anLED indicator over the top of the sensor area; (4) diffuse the LEDindicator light so it does not appear as a point; (5) protect thepiezoresistive material, LED, trace and/or electronic componentsunderneath; and/or (6) provide an appropriate tactile surface so thefinger can slide or grip in a manner appropriate for how the specificsensor is activated.

An example of the relationship of a silicone layer to an underlyingsensor configuration is shown in FIG. 8. The sensor configuration is acircular array 800 of driven/scanned conductive elements, e.g., asdiscussed above with reference to FIG. 5A. Recessing the piezoresistivematerial 802 into the silicone layer 804 above the conductive elementson PCB 805 keeps the piezoresistive material 802 slightly off contactwith the conductive elements (e.g., about 0.008″) which creates adistinctive change in the values read by the ADC when the silicone layerabove a given area of the sensor is touched. Increasing pressure on thesilicone increases the readings of the ADC. Keeping the piezoresistivematerial close to the conductive elements with a sufficient siliconelayer above the piezoresistive material facilitates transfer of thelight from indicator LEDS 806 over the top of the conductive elements.

FIG. 8 also shows a cross-sectional view of a silicone layer 808 withpiezoresistive material 810 in a recess in the underside of siliconelayer 808. The view illustrates a taper 812 on either side of thepiezoresistive material (also present in the cross-sectional viewincluding elements 802 and 804) that allows silicone layer 808 to travelwhen compressed. It should be noted that this cross-section is not toscale, and may be illustrative of the relationships between thepiezoresistive material and the silicone layer for any of the sensors ofany of the implementations described herein.

According to a particular class of implementations, position andpressure information generated using appropriately configured sensors(such as those described herein and suitable alternatives) may be usedto provide sophisticated types of control. For example, changes inposition and/or pressure on a particular sensor may be used to modulatecontrol information around one or more quantized states associated withthe sensor. A particular example in the context of a musical effectscontroller is when a sensor is configured as a piano or synthesizer key.In such a case, changes in position and/or pressure, e.g., when the userwiggles or slides his finger back and forth, can be used to distort ormodulate the pitch of the primary note associated with the key, e.g., toeffect note bending or vibrato.

According to one such implementation illustrated in FIG. 9, a two-sectorsensor 902 is implemented to have a top and a bottom sector of a key,e.g., the top and bottom halves each having a sensor implemented asdescribed with reference to FIG. 6 or 7. The silicone keypad 904 has tworecesses 906 and 908 in the underside of the keypad for holdingpiezoresistive elements, e.g., piezoresistive discs 910.

When the key is activated, e.g., by a touch event, one or both of thepiezoresistive discs contact the underlying conductive elements of thesensor(s), and the control information is mapped to the primaryquantized state associated with the key, i.e., the corresponding note isreproduced. An initial absolute value is generated representing thedifference between the signal(s) generated by the top and bottomsensors. An offset is added to the initial absolute value to define anactivation threshold. After a period of delay from when the key is firstdeclared active, real-time absolute values calculated like the initialvalue are streamed from the key and compared to the activationthreshold. If the activation threshold is exceeded, e.g., because theuser is rocking the key back and forth by wiggling his finger, themicroprocessor maps the correspondingly modulated control informationreceived from the key (i.e., the pressure and/or position information)to the desired effect, e.g., note bending, vibrato, etc.

For more information on materials and sensor configurations that may beused with various implementations, as well as software and devices thatmay be controlled, please refer to U.S. patent application Ser. No.12/904,657 entitled Foot-Operated Controller filed on Oct. 14, 2010(Attorney Docket No. KSMOP004), the entire disclosure of which isincorporated herein by reference for all purposes.

At least some implementations include an array of LEDs to illuminate thesensor array and employ a scheme for driving the array in a way thatallows hundreds of LEDs to be driven off limited current, e.g., thecurrent available from a USB connection. A particular implementation ofa controller (e.g., QuNeo 100 of FIG. 1) employs an array of 251 LEDs asshown in FIG. 9 to provide visual feedback to the user. LED array 900 isa PCB layout in which various of the LEDs may be selectivelyilluminated, e.g., under control of a microprocessor (not shown). One ofthe design requirements of the depicted implementation is that thecontroller be safely powered from a USB-2 device host or supply. Theelectrical specifications for USB-2 include 5V power rails capable ofproviding up to 500 mA of current for a total of 2.5 watts.

A practical way to control 251 LEDs is to create a 16 by 16 matrix thatsources and sinks current for groups of 16 LEDs at a time. This reducesthe best case duty cycle or time that the LED is on to 1/16th. Regularefficiency LEDs are ⅓rd the cost of high efficiency LEDs and the LEDcost is the dominant component of the product's overall component cost.One problem is how to gain maximum brightness without exceeding the 2.5watts of available USB power using standard efficiency LEDs;particularly given the fact that not all of this 2.5 watts can bededicated to LED illumination as the QuNeo must perform other functions.Providing the 16 LEDs with a maximum of 30 mA of current at the 1/16thduty cycle may result in a display that is insufficiently bright formany applications.

While 30 mA is the rated steady state current maximum of regularcommercially available LEDs, most can accept a current spike of up to150 mA for ˜100 microseconds. Heat is the limiting factor for steadystate current drive, but the LED can be driven brighter for a briefperiod of time. Therefore, according to a particular class ofimplementations, a drive circuit is provided for accomplishing the drivecurrent shown in FIG. 10A for each LED within a matrix of source rowsand sink columns. One implementation of such a drive circuit is shown inFIG. 10B.

The parallel R and C associated with each LED (e.g., R1 and C1associated with LED1) provides a brief near DC path to ground creating alimited current spike for each of the LEDs when switched on from an offstate. As the duration of the spike is limited by the charge time of thecapacitor, no other supervisory or switching circuitry is required, noincrease in processor overhead is created, and component cost isminimal. This design not only increases the brightness of the LEDs, italso allows LED refresh cycles to be much shorter than they wouldotherwise have to be in order to create the desired level of brightness.This possibility of fast refresh rates allows opportunities for moresophisticated display techniques (such as dimming and color-mixing) thatare normally only possible with a costly and component-heavy design.

According to a particular implementation, the default refresh rate for a16×16 LED matrix is ˜1000 Hz. By skipping refresh opportunities, theLEDs may be dimmed in a controllable manner. 1000 Hz also allows 16levels of brightness as well as Off, with no discernible flickeringperceived even at low brightness levels. This feature allows the deviceto respond to a wide range of inputs with a complex and nuanced visualdisplay without exceeding current limit requirements or addingsignificantly to the cost of the controller.

As is well known, there are two dominant switch or pad layouts used inthe conventional musical controller world. One is a 4×4 array of drumpads in which sixteen different drum sounds are mapped 1:1 to thesixteen pads. Hitting a pad causes the corresponding drum sound to beproduced. Another popular controller uses an array of 8×8 switches thatcan be configured, for example, to trigger corresponding audio files, orto determine which one of 8 beats of a rhythm is generated (horizontalpads) for each of 8 different instruments (vertical pads).

According to a particular class of implementations and as illustrated inFIG. 11, an array of sixteen 4-quadrant QuNeo sensors may be configuredto operate as either a 4×4 sensor array (e.g., array 1102) or an 8×8sensor array (e.g., array 1104), thus combining the functionality ofboth types of conventional controllers in a single device. That is,because each of the 16 pads of a particular QuNeo implementation maybehave as a positional sensor and includes bicolor LEDs in each corner,each pad can operate as a single sensor, e.g., as a drum-style trigger,or as a set of four pressure-sensitive switches, thus providing theutility of both a 4×4 array and an 8×8 array. The LEDs may beselectively illuminated to provide visual feedback to the user as to thecurrent configuration.

According to some implementations, QuNeo may be configured to power upwith presets that emulate the functionality of popular drum pad and gridcontrollers. For example, in the traditional drum pad mode, QuNeo maybehave like an Akai MPD/MPC pad controller configured for dynamicelectronic drumming and pad based sequencing. For example, QuNeo may beset up similar to a standard drum pad controller, with four sets ofnotes from C2 to E7. An appropriate velocity value may be associatedwith each note. 16 notes may be playable (1 per pad), e.g., startingfrom the bottom left and ascending chromatically to the right and towardthe top.

Alternatively, as a grid controller, the QuNeo may emulate popular 8×8grid based controllers like the Monome and Novation's Launchpad. Monomestyle sequencing and sample manipulation is readily emulated, with theadded bonus of pressure output for each of the 64 steps. In anotherexample, clip launching in Ableton Live is also easily supported whileoperating as a grid controller, with 64 possible clips per bank. Multicolor LEDs, also in an 8×8 grid, may act as indicators for beats andplaying/recording.

According to a particular class of implementations, QuNeo may beconfigured to work with a wide variety of third-party software and/ordevices. This versatility is enabled through the installation ofancillary code into the third-party software to enable the mapping ofQuNeo's high-density control information to existing music applications,e.g., synthesizers, DJ applications, recording applications, etc.

Such implementations of QuNeo have a variety of associated templatesthat allow QuNeo to integrate and work with the various third-partysoftware. These templates facilitate installation of Python script codeinto the third-party software that maps the QuNeo control information tothe inputs recognized by the interface stack of the third-partysoftware. When the QuNeo software is activated (e.g., on a user's PC asdownloaded from the web), the user is presented with a list ofthird-party software. When the user selects one or more options withwhich he wants the QuNeo to work, the installer finds the selectedsoftware and installs the necessary scripts. Corresponding manuals mayalso be loaded which explain how to use the QuNeo to control theselected software.

QuNeo has the potential to interface with many different softwareapplications since it is a class-compliant MIDI device with controlinformation mappings to complement many of the most popular pieces ofsoftware. When the user installs QuNeo software (e.g., downloaded to hisPC from the web), the user is prompted to select from among theavailable software templates as shown in screenshot 1200 of FIG. 12.Each option on the list has an associated group of files that save theuser setup time, providing an easy “out-of-box” experience for the userin connecting QuNeo with their favorite software application.

For example, if the user selects the Ableton Live template, an AbletonLive example file is put into the user's install directory along with anautomatically installed QuNeo Editor and associated documentation. Theexample file includes sounds the user can try out to illustrate the wayin which QuNeo is initially set up to control the Ableton Live software.Selection of the Ableton Live template also results in installation of agroup of remote mapping files. These mapping files control which of theapplication's functions are triggered when data are received from QuNeo.For example, when a certain button on QuNeo is pressed, theapplication's play button is triggered). In the case of Ableton Live,the mapping files are Python scripts. However, it should be noted thatthe mapping file format may vary from application to application.

The installer places the remote mapping files in a location on theuser's computer where the corresponding application can find them andinteract with them accordingly. The location may be a default, in theuser's Applications folder on a Mac. Alternatively, this may beaccomplished by asking the user to browse to a particulardirectory—usually to the location of the selected application itself—asshown in screenshot 1300 of FIG. 13.

There is some error checking in place to make sure the user doesn'taccidentally select the wrong location, and then the remote mappingfiles are copied into the selected location. In the case of AbletonLive, the Python scripts go into a folder within the application whereother supported controller scripts typically exist (e.g., as shown inscreenshot 1400 of FIG. 14). In this way, the application will thenrecognize QuNeo as a supported control surface when it is next launched.

A copy of the remote mapping files may also be placed in the installdirectory in case there is an error during installation, if the userwants to manually add the files to a different version of Ableton Live,or in case they are just curious to look at them. The install directorymight end up looking like screenshot 1500 of FIG. 15. As shown, there isa folder within the Software Templates folder for each application theuser selects. The folder Ableton Live 1.1 contains the folderInstallation Files (which holds the extra copy of the Ableton Liveremote mapping files), the Quickstart guides documenting how to use theAbleton Live template, and the example file containing sounds for theuser to try out (“QuNeoDemo Project”).

As is well known, Ableton Live is for electronic music performance andcomposition. Another example of third-party software that may becontrolled using QuNeo is Mixxx—a free DJ program. The Mixxx templateallows users to play the rotary sensors like turntables, create loopsusing the pads, and, in turn Mixxx control information is used tocontrol the QuNeo LEDs. So, with a single purchase, i.e., the QuNeo, theuser has everything he needs to start DJ-ing right away. Mixxx uses adifferent file format to keep track of its commands. To recognize QuNeoas a controller Mixxx needs two files with very particular names placedinto its MIDI folder called “KMI QuNeo.midi.xml” and“KMI-QuNeo-scripts.js.” When Mixxx sees these two files it creates anoption in its menu of MIDI controllers called “KMI QuNeo.” When the userselects this option, QuNeo is configured to control the Mixxxapplication in the way defined by these two files.

If the user decides to install the Mixxx template in screenshot 1200, heis again prompted to navigate to the location of his Mixxx application(as illustrated in screenshot 1600 of FIG. 16) to find the locationwhere these two remote mapping files should be stored. Finally, a foldercalled Mixxx 1.0 is created inside of the user's Software Templatesfolder (see screenshot 1500) holding a Quickstart guide to explain howto use the template, and a copy of the two Remote Files just in case theuser needs to move them in manually, or edit them in some way. In thisway, the user can quickly configure his QuNeo to control his existingsoftware.

It should be noted that, despite references to particular computingparadigms and software tools herein, the computer program instructionswith which embodiments of the invention may be implemented maycorrespond to any of a wide variety of programming languages, softwaretools and data formats, and be stored in any type of volatile ornonvolatile, non-transitory computer-readable storage medium or memorydevice, and may be executed according to a variety of computing modelsincluding, for example, a client/server model, a peer-to-peer model, ona stand-alone computing device, or according to a distributed computingmodel in which various of the functionalities may be effected oremployed at different locations. In addition, reference to particularprotocols herein are merely by way of example. Suitable alternativesknown to those of skill in the art may be employed without departingfrom the scope of the invention.

While the invention has been particularly shown and described withreference to specific embodiments thereof, it will be understood bythose skilled in the art that changes in the form and details of thedisclosed embodiments may be made without departing from the spirit orscope of the invention. For example, implementation have been describedherein in which sensors are implemented in which piezoresistive materialis brought into contact with conductive elements on an underlying PCB.However, it should be noted that implementations are contemplated inwhich the elements on the PCB themselves include or are constructed withpiezoresistive material, and the overlying material that contacts thePCB elements may be conductive and/or piezoresistive.

Finally, although various advantages, aspects, and objects of thepresent invention have been discussed herein with reference to variousembodiments, it will be understood that the scope of the inventionshould not be limited by reference to such advantages, aspects, andobjects. Rather, the scope of the invention should be determined withreference to the appended claims.

1-23. (canceled)
 24. A device, comprising: a substrate; a plurality ofconductive elements, the conductive elements being arranged on a samesurface of the substrate in a plurality of groups of conductiveelements; a plurality of pieces of piezoresistive fabric, each piece ofpiezoresistive fabric corresponding to one of the groups of conductiveelements, each piece of piezoresistive fabric being in contact with thecorresponding group of conductive elements; and circuitry configured toapply first signals sequentially to a first subset of the conductiveelements, the circuitry also being configured to receive second signalscorresponding to the first signals from a second subset of theconductive elements.
 25. The device of claim 24, wherein each piece ofpiezoresistive fabric and the corresponding group of conductive elementsare part of a voltage divider.
 26. The device of claim 24, wherein afirst group of conductive elements includes first conductive elements ofthe first subset of the conductive elements and second conductiveelements of the second subset of the conductive elements, the first andsecond conductive elements of the first group of conductive elementsbeing arranged on the substrate in an alternating pattern.
 27. Thedevice of claim 26, wherein the alternating pattern is a one-dimensionallinear array, a two-dimensional circular array, or a two-dimensionalrectilinear array.
 28. The device of claim 24, wherein thepiezoresistive fabric is a non-woven fabric.
 29. The device of claim 24,wherein the circuitry is configured to process the second signals togenerate location information relative to a surface of the device. 30.The device of claim 29, wherein the circuitry is configured to generatethe location information with a positional resolution greater than thatrepresented by the plurality of conductive elements.
 31. The device ofclaim 29, wherein the circuitry is configured to generate the locationinformation for multiple simultaneous touch events on the surface of thedevice.
 32. The device of claim 29, wherein the circuitry is configuredto generate the location information by interpolating values derivedfrom a subset of the second signals.
 33. The device of claim 24, whereinthe circuitry is configured to process the second signals to generatemotion information relative to a surface of the device.
 34. The deviceof claim 24, wherein the circuitry is configured to process the secondsignals to generate information representing an event relative to asurface of the device.
 35. The device of claim 34, wherein theinformation represents the event in three dimensions.
 36. The device ofclaim 24, wherein the circuitry is configured to process the secondsignals to generate pressure information relative to a surface of thedevice.
 37. The device of claim 36, wherein the circuitry is configuredto generate the pressure information by combining values derived from asubset of the second signals.
 38. The device of claim 24, wherein thecircuitry is configured to process the second signals to determine astate associated with the device, and to modulate control informationaround the state based on corresponding changes in at least one of thesecond signals.
 39. The device of claim 24, wherein each piece of thepiezoresistive fabric forms a sensor with the corresponding group ofconductive elements.
 40. The device of claim 39, wherein the circuitryis configured to process the second signals independently for each ofthe sensors.
 41. The device of claim 39, wherein the circuitry isconfigured to process the second signals in combination for two or moreof the sensors.
 42. The device of claim 39, wherein the circuitry isconfigured to dynamically configure the sensors for independent orcombined operation.
 43. The device of claim 24, wherein the circuitry isconfigured to apply the first signals sequentially to the first subsetof the conductive elements in accordance with an arrangement of thefirst subset of the conductive elements on the substrate.